Nâng cấp giao diện bố cục blogger lên phiên bản mới

Chào các bạn ở bài viết này mình sẽ hướng dẫn các bạn cách nâng cấp giao diện phần bố cục của blogger lên phiên bản mới với nhiều ưu điểm


Dưới đây là demo phần bố cục mà template mình đang sử dụng

1. NÂNG CẤP B:SKIN

Sau khi nâng cấp b:Skin lên phiên bản mới sẽ hỗ trợ đầy đủ các tính năng CSS script và Webkit mới nhất.
Để thực hiện việc nâng cấp các bạn chỉ cần vào Chủ đề >> Chỉnh sửa
Sau đó các bạn tìm dòng code sau

<b:skin>

Và thay thế nó bằng

<b:skin version=’1.0.0′>

 Thực chất chúng ta chỉ cần thêm chữ  version=’1.0.0′ vào sau chữ b:skin là được

2. NÂNG CẤP BLOGGER LAYOUT 

Đây là hình ảnh trước và sau khi nâng cấp lên phiên bản mới
Chữ chỉnh sửa đã được đổi thành hình cái bút nhìn rất gọn và chuyên nghiệp.
Xuất hiện thêm biểu tượng hình con mắt với tính năng có thể bật tắt các widget để nó có thể hiện hoặc không hiện ra ngoài website, tiện ích hơn rất nhiều so với trước kia chúng ta phải xóa đi rồi thêm lại rất mất công.
Để thực hiện nâng cấp các bạn tìm đoạn code sau

<html b:version=’2′ class=’v2′ expr:dir=’data:blog.languageDirection’ xmlns=’http://www.w3.org/1999/xhtml’ xmlns:b=’http://www.google.com/2005/gml/b’ xmlns:data=’http://www.google.com/2005/gml/data’ xmlns:expr=’http://www.google.com/2005/gml/expr’>

Và thay thế nó bằng đoạn sau

<html b:version=’2′ class=’v2′ b:layoutsVersion=’3′ expr:dir=’data:blog.languageDirection’ xmlns=’http://www.w3.org/1999/xhtml’ xmlns:b=’http://www.google.com/2005/gml/b’ xmlns:data=’http://www.google.com/2005/gml/data’ xmlns:expr=’http://www.google.com/2005/gml/expr’> 

Thực chất chúng ta chỉ cần thêm chữ   b:layoutsVersion=’3′ vào sau chữ  b:version=’2′ class=’v2′ là được rồi.

3. NÂNG CẤP DEFAULT WIDGET

Để thực hiện nâng cấp các bạn tìm dòng code  b:layoutsVersion=’3′ vừa mới thay ở trên và chèn vào trước nó dòng code b:defaultwidgetversion=’2′ . Sau khi chèn bạn sẽ có đoạn code hoàn chỉnh như sau

<html b:version=’2′ class=’v2′ b:defaultwidgetversion=’2′  b:layoutsVersion=’3′ expr:dir=’data:blog.languageDirection’ xmlns=’http://www.w3.org/1999/xhtml’ xmlns:b=’http://www.google.com/2005/gml/b’ xmlns:data=’http://www.google.com/2005/gml/data’ xmlns:expr=’http://www.google.com/2005/gml/expr’>

Tiếp theo các bạn chèn đoạn code sau vào sau thẻ ]]></b:skin> hoặc thẻ </b:template-skin>

<b:defaultmarkups>
      <b:defaultmarkup type=’Common’>
        <b:includable id=’responsiveImage’ var=’settings’>
          <b:comment>Add in the high-res thumb for youtube images.</b:comment>
          <b:if cond=’not data:settings.image.isYoutube’>
            <b:include data=’settings’ name=’super.responsiveImage’/>
          <b:else/>
            <b:with value=’resizeImage(data:post.featuredImage.youtubeMaxResDefaultUrl, 1152, &quot;4:3&quot;)’ var=’highRes’>
              <b:include data='{                                  image: data:settings.image,                                  imageSizes: [320,490],                                  sourceSizes: &quot;(max-width: 640px) 100vw, (max-width: 1024px) 576px, 490px&quot;,                                  enhancedSourceset: data:highRes                                }’ name=’super.responsiveImage’/>
            </b:with>
          </b:if>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type=’BlogSearch’>
        <b:includable id=’searchSubmit’>
          <b:if cond=’data:widget.sectionId == &quot;search_top&quot;’>
            <label>
              <input type=’submit’/>
              <b:include data='{ iconClass: &quot;touch-icon search-icon&quot; }’ name=’searchIcon’/>
            </label>
          <b:else/>
            <b:include name=’super.searchSubmit’/>
          </b:if>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type=’AdSense,Blog’>
        <b:includable id=’defaultAdUnit’>
          <!– Clear out style (need non-empty string) –>
          <b:with value=’&quot;/* Done in css. */&quot;’ var=’style’>
            <b:include name=’super.defaultAdUnit’/>
          </b:with>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type=’Blog,FeaturedPost,PopularPosts’>
        <b:includable id=’sharingButtonContent’>
          <b:message name=’messages.share’/>
        </b:includable>
        <b:includable id=’postLabels’>
          <b:include cond=’data:view.isSingleItem and data:widget.type == &quot;Blog&quot;’ name=’super.postLabels’/>
        </b:includable>
        <b:includable id=’headerByline’>
          <b:if cond=’data:view.isSingleItem and data:widget.type == &quot;Blog&quot;’>
            <b:include name=’super.headerByline’/>
          <b:else/>
            <b:include data='{ items: [&quot;author&quot;, &quot;timestamp&quot;] }’ name=’headerBylineOverride’/>
          </b:if>
        </b:includable>
        <b:includable id=’footerBylines’>
          <b:if cond=’data:view.isSingleItem and data:widget.type == &quot;Blog&quot;’>
            <b:include name=’super.footerBylines’/>
          <b:else/>
            <b:include data='{ items: [[&quot;share&quot;, &quot;comments&quot;]] }’ name=’footerBylinesOverride’/>
          </b:if>
        </b:includable>
        <b:includable id=’emailPostIcon’>
          <!– Replace icon with text –>
          <span class=’byline’>
            <a class=’flat-button’ expr:href=’data:post.emailPostUrl’><data:messages.emailPost/></a>
          </span>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type=’Blog’>
        <b:includable id=’main’>
          <b:if cond=’not data:posts.any’>
            <div class=’no-posts’>
              <b:eval expr=’data:view.isSearch ? data:messages.noResultsFound : data:messages.theresNothingHere’/>
            </div>
          </b:if>
          <!– Display title on homepage –>
          <b:if cond=’data:posts.any and data:view.isHomepage’>
            <h3 class=’title’><data:messages.latestPosts/></h3>
          </b:if>
          <!– Filter out the featured post, but only on the homepage. –>
          <b:with value='(data:widgets.FeaturedPost filter w =&gt; w.sectionId == &quot;page_body&quot;) map (w =&gt; w.postId)’ var=’featuredPostIds’>
            <b:with value=’data:view.isHomepage ? data:posts filter (post =&gt; post.id not in data:featuredPostIds) : data:posts’ var=’posts’>
              <b:include name=’super.main’/>
            </b:with>
          </b:with>
        </b:includable>
        <b:includable id=’commentFormIframeSrc’ var=’post’>
          <b:with value=’data:template.isAlternateRendering ? (&quot;&amp;skinvariant=&quot; + data:template.variant) : &quot;&quot;’ var=’variantParam’>
            <a expr:href=’data:post.commentFormIframeSrc + &quot;&amp;skin=soho&quot; + data:variantParam’ id=’comment-editor-src’/>
          </b:with>
        </b:includable>
        <b:includable id=’commentForm’ var=’post’>
          <b:with value=’&quot;90px&quot;’ var=’cmtIframeInitialHeight’>
            <b:include data=’post’ name=’super.commentForm’/>
          </b:with>
        </b:includable>
        <b:includable id=’threadedCommentForm’ var=’post’>
          <b:with value=’&quot;90px&quot;’ var=’cmtIframeInitialHeight’>
            <b:include data=’post’ name=’super.threadedCommentForm’/>
          </b:with>
        </b:includable>
        <b:includable id=’postCommentsAndAd’ var=’post’>
          <!– Always render inline ad inside container –>
          <div class=’post-outer-container’>
            <div class=’post-outer’>
              <b:include data=’post’ name=’post’/>
            </div>
            <b:include cond=’data:view.isSingleItem’ data=’post’ name=’commentPicker’/>
            <b:include cond=’data:post.includeAd and data:post.adNumber lt (data:view.isHomepage ? 2 : 3)’ data=’post’ name=’inlineAd’/>
          </div>
        </b:includable>
        <b:includable id=’post’ var=’post’>
          <b:if cond=’data:view.isSingleItem’>
            <div class=’post-sidebar’>
              <b:if cond=’data:widgets.Blog.first.allBylineItems.share and data:post.shareUrl’>
                <div class=’post-sidebar-item post-share-buttons’>
                  <b:with value=’data:widget.instanceId + &quot;-&quot; + (data:regionName ?: &quot;byline&quot;) + &quot;-&quot; + data:post.id’ var=’sharingId’>
                    <b:include data='{                                                              sharingId: data:sharingId,                                                              originalUrl: data:post.url,                                                              shareUrl: data:post.shareUrl,                                                              platforms: data:blog.sharing.platforms,                                                            }’ name=’sharingButtons’/>
                  </b:with>
                </div>
              </b:if>
              <b:if cond=’data:widgets.Blog.first.allBylineItems.labels and data:post.labels’>
                <div class=’post-sidebar-item post-sidebar-labels’>
                  <div><data:messages.labels/></div>
                  <ul>
                    <b:loop index=’i’ values=’data:post.labels’ var=’label’>
                      <li><a expr:href=’data:label.url’ rel=’tag’><data:label.name/></a></li>
                    </b:loop>
                  </ul>
                </div>
              </b:if>
            </div>
          </b:if>
          <div class=’post’>
            <b:class cond=’data:view.isMultipleItems and data:post.featuredImage’ name=’has-featured-image’/>
            <b:class cond=’data:view.isMultipleItems and not data:post.featuredImage’ name=’no-featured-image’/>
            <b:include data=’post’ name=’postMeta’/>
            <b:if cond=’data:view.isSingleItem’>
              <b:include name=’headerByline’/>
              <b:include data=’post’ name=’postTitle’/>
              <div class=’post-body-container’>
                <b:include data=’post’ name=’postBody’/>
              </div>
            <b:else/>
              <b:if cond=’data:post.featuredImage’>
                <div class=’snippet-thumbnail’>
                  <a b:whitespace=’remove’ expr:href=’data:post.url’>
                    <b:comment>Max width is 576, so max size @ 2x is 1152.</b:comment>
                    <b:include data='{                                        image: data:post.featuredImage,                                        imageSizes: [320,490,576,1152],                                        sourceSizes: &quot;(max-width: 576px) 100vw, (max-width: 1024px) 576px, 490px&quot;                                      }’ name=’responsiveImage’/>
                  </a>
                  <b:include name=’headerByline’/>
                </div>
              <b:else/>
                <b:include name=’headerByline’/>
              </b:if>
              <b:include data=’post’ name=’postTitle’/>
            </b:if>
            <b:include data=’post’ name=’postFooter’/>
          </div>
        </b:includable>
        <b:includable id=’feedLinks’>
          <!– Don’t render –>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type=’BlogArchive’>
        <b:includable id=’main’ var=’this’>
          <details class=’collapsible extendable’>
            <b:attr cond=’data:view.isArchive’ name=’open’ value=’open’/>
            <b:with value=’true’ var=’renderAsDetails’>
            <b:with value=’data:messages.archive’ var=’defaultTitle’>
              <b:include name=’super.main’/>
            </b:with>
            </b:with>
          </details>
        </b:includable>
        <b:includable id=’flat’>
          <b:include data='{                               buttonClass: &quot;flat-button&quot;,                               items: data:this.data,                               itemSet: &quot;data&quot;,                               itemsMarkup: &quot;super.flat&quot;                             }’ name=’extendableItems’/>
        </b:includable>
        <b:includable id=’hierarchy’>
          <b:include data='{                               buttonClass: &quot;flat-button&quot;,                               limit: 1,                               items: data:this.data,                               itemSet: &quot;data&quot;,                               itemsMarkup: &quot;super.hierarchy&quot;                             }’ name=’extendableItems’/>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type=’FeaturedPost’>
        <b:includable id=’main’>
          <b:with value=’data:messages.featured’ var=’defaultTitle’>
            <b:include name=’super.main’/>
          </b:with>
        </b:includable>
        <b:includable id=’snippetedPostContent’>
          <b:with value=’data:postDisplay.showFeaturedImage and data:post.featuredImage’ var=’hasImage’>
            <div class=’post-content’>
              <b:class cond=’data:hasImage’ name=’has-featured-image’/>
              <b:class cond=’not data:hasImage’ name=’no-featured-image’/>
              <!– Change the order and add a snippet container –>
              <b:include cond=’data:hasImage’ data=’post’ name=’snippetedPostThumbnail’/>
              <div class=’post-text-container’>
                <b:include name=’headerByline’/>
                <b:include cond=’data:this.postDisplay.showTitle’ name=’snippetedPostTitle’/>
                <b:with value=’&quot;featured-post&quot;’ var=’snippetPrefix’>
                  <b:include cond=’data:this.postDisplay.showSnippet’ data=’post’ name=’postSnippet’/>
                </b:with>
                <div class=’post-footer’>
                  <b:include name=’footerBylines’/>
                  <!– TODO(sarnesjo): Use the postJumpLink call (in case it’s been customized). –>
                  <a class=’jump-link flat-button’ expr:href=’data:post.url’><data:messages.readMore/></a>
                </div>
              </div>
            </div>
          </b:with>
        </b:includable>
        <b:includable id=’snippetedPostByline’ var=’post’>
          <b:include name=’headerByline’/>
        </b:includable>
        <b:includable id=’snippetedPostThumbnail’>
          <b:include data='{image: data:featuredImage, maxSize: 954, selector: &quot;.hero-thumb&quot;}’ name=’responsiveImageStyle’/>
          <a class=’thumb-link’ expr:href=’data:post.url’><div class=’thumb hero-thumb’/></a>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type=’Header’>
        <b:includable id=’image’>
          <b:include name=’super.image’/>
          <!– If we are replacing the title, force it to render anyway, and it’ll be hidden in CSS. –>
          <b:include cond=’data:this.imagePlacement == &quot;REPLACE&quot;’ name=’title’/>
        </b:includable>
        <b:includable id=’title’>
          <div>
            <b:class cond=’data:this.imagePlacement == &quot;REPLACE&quot;’ name=’replaced’/>
            <b:include name=’super.title’/>
          </div>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type=’Label’>
        <b:includable id=’main’ var=’this’>
          <details class=’collapsible extendable’>
            <b:attr cond=’data:view.isLabelSearch’ name=’open’ value=’open’/>
            <b:with value=’true’ var=’renderAsDetails’>
            <b:with value=’data:messages.labels’ var=’defaultTitle’>
              <b:include name=’super.main’/>
            </b:with>
            </b:with>
          </details>
        </b:includable>
        <b:includable id=’list’>
          <b:include data='{                               buttonClass: &quot;flat-button&quot;,                               items: data:this.labels,                               itemSet: &quot;labels&quot;,                               itemsMarkup: &quot;super.list&quot;                             }’ name=’extendableItems’/>
        </b:includable>
        <b:includable id=’cloud’>
          <b:include data='{                               buttonClass: &quot;flat-button&quot;,                               items: data:this.labels,                               itemSet: &quot;labels&quot;,                               itemsMarkup: &quot;super.cloud&quot;                             }’ name=’extendableItems’/>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type=’PageList’>
        <b:includable id=’content’>
          <div class=’widget-content’>
            <b:if cond=’data:widget.sectionId == &quot;page_list_top&quot;’>
              <b:include name=’overflowablePageList’/>
            <b:else/>
              <b:include name=’pageList’/>
            </b:if>
          </div>
        </b:includable>
        <b:includable id=’overflowButton’>
          <a><data:messages.moreEllipsis/></a>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type=’PopularPosts’>
        <b:includable id=’main’>
          <!– Default the title to ‘Popular posts’. –>
          <b:with value=’data:messages.popularPosts’ var=’defaultTitle’>
            <b:include name=’super.main’/>
          </b:with>
        </b:includable>
        <b:includable id=’snippetedPostContent’>
          <div class=’post’>
            <b:class cond=’data:post.featuredImage’ name=’has-featured-image’/>
            <b:class cond=’not data:post.featuredImage’ name=’no-featured-image’/>
            <b:if cond=’data:post.featuredImage’>
              <div class=’snippet-thumbnail’>
                <a b:whitespace=’remove’ expr:href=’data:post.url’>
                  <b:include data='{                                      image: data:post.featuredImage,                                      imageSizes: [330,660,1320],                                      sourceSizes: &quot;(max-width: 660px) 100vw, 660px&quot;                                    }’ name=’responsiveImage’/>
                </a>
                <b:include name=’headerByline’/>
              </div>
            <b:else/>
              <b:include name=’headerByline’/>
            </b:if>
            <b:include cond=’data:this.postDisplay.showTitle’ name=’snippetedPostTitle’/>
            <div class=’post-footer’>
              <b:include name=’footerBylines’/>
            </div>
          </div>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type=’Profile’>
        <b:includable id=’main’ var=’this’>
          <!– Remove widget title –>
          <b:include name=’content’/>
        </b:includable>
        <b:includable id=’teamProfileLink’>
          <!– Remove background image, add “Visit profile” message –>
          <a class=’profile-link g-profile’ expr:href=’data:userUrl’>
            <b:include name=’profileImage’/>
            <div class=’profile-name-wrapper’>
              <div class=’profile-name’><data:display-name/></div>
              <div class=’visit-profile’><data:messages.visitProfile/></div>
            </div>
          </a>
        </b:includable>
        <b:includable id=’userProfileLink’>
          <!– Remove background image –>
          <a class=’profile-link g-profile’ expr:href=’data:userUrl’ rel=’author’>
            <data:displayname/>
          </a>
        </b:includable>
        <b:includable id=’viewProfileLink’>
          <!– Change message to “Visit profile” –>
          <a class=’profile-link’ expr:href=’data:userUrl’ rel=’author’>
            <data:messages.visitProfile/>
          </a>
        </b:includable>
        <b:includable id=’defaultProfileImage’>
          <div class=’default-avatar-wrapper’>
            <b:include data='{ iconClass: &quot;avatar-icon&quot; }’ name=’defaultAvatarIcon’/>
          </div>
        </b:includable>
      </b:defaultmarkup>
    </b:defaultmarkups>

Xong rồi bạn lưu lại template là được.
Lưu ý các tiện ịch bạn đã tạo từ trước thì bạn có thể copy sang tiện ích mới hoặc vào chỉnh sửa chủ đề và thay toàn bộ đoạn version=’1′ bằng đoạn sau version=’2′ visible=’true’.

Và thay thế đoạn

<b:includable id=’main’> <!– only display title if it’s non-empty –> <b:if cond=’data:title != &quot;&quot;’> <h4 class=’title’><data:title/></h4> </b:if> <div class=’widget-content’> <data:content/> </div> </b:includable>

Bằng đoạn sau

<b:includable id=’main’>
<b:include name=’widget-title’/>
<div class=’widget-content’>
<data:content/>
 </div>
</b:includable>

Xong rồi lưu lại và vào bố cục để xem thành quả nhé.
Lưu ý với các tiện ích Blog1 và PopularPost bạn không nên thay vì chúng có cấu trúc khác nhau nên khi thay sẽ bị vỡ layout.
Chúc các bạn thành công!

Leave a Comment

sơn epoxy / sơn sàn epoxy / cửa lưới chống muỗi / vách ngăn lướii chống muỗi / cửa lùa chống muỗi / vệ sinh công nghiệp / đánh bóng sàn bê tông / vệ sinh nhà máy / dịch vụ giặt thảmm / vệ sinh nhà hàng / vệ sinh tòa nhà / dịch vụ vệ sinh kính / vệ sinh khách sạn / vệ sinh chung cư / dịch vụ cắt cỏ / đánh bóng kính / diệt côn trùng / diệt mối / diệt kiến / diệt muỗi / diệt ruồi / diệt gián / diệt chuột / dọn bể nước ngầm / phụ kiện mái che / cơ khí chế tạo / mái che di động / rèm nhựa / vách nhựa ngăn phòng lạnh / rèm nhựa phòng lạnh / dù che nắng / mái kéo di động / nhà bạt di động / mái xếp di động / mái hiên di động / thay bạt mái hiên di động / bạt che nắng / phụ kiện mái che di động / mái che sân thượng / mái che quán cafe / mái che di động miền bắc / mái che di động miền nam / bạt che di động hcm /